package design_pattern.lx2_abstract_factory_pattern;

/**
 * @Author Mr.wang
 * @Description
 * @Date 2020-04-01
 */
public class AbstractFactoryPatternDemo {
    public static void main(String[] args) {
        // 获取形状工厂
        AbstractFactory shapeFactory = FactoryProducer.getFactory("SHAPE");
        // 获取形状为Circle的对象
        Shape shape1 = shapeFactory.getShape("CIRCLE");
        // 调用circle的draw方法
        shape1.draw();
        // 获取形状为Rectangle的对象
        Shape shape2 = shapeFactory.getShape("RECTANGLE");
        // 调用rectangle的draw方法
        shape2.draw();
        // 获取 Square 的对象，并调用它的 draw 方法
        Shape shape3 = shapeFactory.getShape("SQUARE");
        // 调用 Square 的draw方法
        shape3.draw();

        //获取颜色工厂
        AbstractFactory colorFactory = FactoryProducer.getFactory("COLOR");

        //获取颜色为 Red 的对象
        Color color1 = colorFactory.getColor("RED");

        //调用 Red 的 fill 方法
        color1.fill();

        //获取颜色为 Green 的对象
        Color color2 = colorFactory.getColor("Green");

        //调用 Green 的 fill 方法
        color2.fill();

        //获取颜色为 Blue 的对象
        Color color3 = colorFactory.getColor("BLUE");

        //调用 Blue 的 fill 方法
        color3.fill();

    }
}
